home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmigaPlus / Tools / Development / AmigaTalk / intuition / Menu.st < prev    next >
Encoding:
Text File  |  2004-01-31  |  6.5 KB  |  364 lines

  1. "---------------------------------------------------"
  2. " Menu Class implements control of Amiga Menus      "
  3. " except for actually displaying it, which is in the"
  4. " Window class.                                     "
  5. "---------------------------------------------------"
  6.  
  7. Class Menu :Glyph
  8.    private nextMenu leftEdge topEdge width height flags menuName firstItem
  9. !
  10. [
  11.    getMenu
  12.  
  13.       ^ private
  14. |
  15.    getStartPoint
  16.  
  17.       leftEdge <- <primitive 182 2 0 0 private>.
  18.       topEdge  <- <primitive 182 2 1 0 private>.
  19.  
  20.       ^ leftEdge @ topEdge
  21. |
  22.    getMenuSize
  23.  
  24.       width  <- <primitive 182 2 2 0 private>.
  25.       height <- <primitive 182 2 3 0 private>.
  26.  
  27.       ^ width @ height
  28. |
  29.    setStartPoint: newPoint ! x y !
  30.  
  31.       x <- newPoint x.
  32.       y <- newPoint y.
  33.  
  34.       <primitive 182 3 0 x 0 private>.      
  35.       <primitive 182 3 1 y 0 private>.
  36.  
  37.       leftEdge <- x.
  38.       topEdge  <- y
  39. |
  40.    setMenuSize: sizePoint ! w h !
  41.  
  42.       w <- sizePoint x.
  43.       h <- sizePoint y.
  44.  
  45.       <primitive 182 3 2 w 0 private>.
  46.       <primitive 182 3 3 h 0 private>.
  47.  
  48.       width  <- w.
  49.       height <- h
  50. |
  51.    dispose
  52.       
  53.       <primitive 182 0 0 private>.
  54.       
  55.       <primitive 250 5 0 private>.
  56.       
  57.       ^ nil
  58. |
  59.    getFlags
  60.  
  61.       ^ flags <- <primitive 182 2 4 0 private>
  62. |
  63.    setFlags: newFlags
  64.  
  65.       <primitive 182 3 4 newFlags 0 private>.
  66.  
  67.       flags <- newFlags
  68. |
  69.    getNextMenu
  70.  
  71.       ^ nextMenu <- <primitive 182 2 8 0 private>
  72. |
  73.    setNextMenu: newNextMenu
  74.  
  75.       <primitive 182 3 8 newNextMenu 0 private>.
  76.  
  77.       nextMenu <- newNextMenu
  78. |
  79.    getFirstItem
  80.  
  81.       ^ firstItem <- <primitive 182 2 9 0 private>
  82. |
  83.    setFirstItem: newFirstItem
  84.  
  85.       <primitive 182 3 9 newFirstItem 0 private>.
  86.  
  87.       firstItem <- newFirstItem
  88. |
  89.    getMenuName
  90.  
  91.       ^ menuName <- <primitive 182 2 13 0 private>
  92. |
  93.    setMenuName: newMenuName
  94.  
  95.       <primitive 182 3 13 newMenuName 0 private>.
  96.  
  97.       menuName <- newMenuName
  98. |
  99.    new: newMenuName
  100.  
  101.       private  <- <primitive 182 1 0 newMenuName>.
  102.  
  103.       menuName <- newMenuName.
  104.  
  105.       ^ self
  106. ]
  107.  
  108. Class MenuItem :Menu
  109.    private    nextItem      leftEdge topEdge    width    height 
  110.    flags      mutualExclude itemFill selectFill command  subItem 
  111.    nextSelect itemName
  112. !
  113. [
  114.    getMenuItem
  115.  
  116.       ^ private
  117. |
  118.    dispose
  119.  
  120.       <primitive 182 0 1 private>.
  121.       
  122.       <primitive 250 5 0 private>.
  123.       
  124.       ^ nil
  125. |
  126.    getStartPoint
  127.  
  128.       leftEdge <- <primitive 182 2 0 1 private>.
  129.       topEdge  <- <primitive 182 2 1 1 private>.
  130.  
  131.       ^ leftEdge @ topEdge
  132. |
  133.    getItemSize
  134.  
  135.       width  <- <primitive 182 2 2 1 private>.
  136.       height <- <primitive 182 2 3 1 private>.
  137.  
  138.       ^ width @ height
  139. |
  140.    setStartPoint: newPoint ! x y !
  141.  
  142.       x <- newPoint x.
  143.       y <- newPoint y.
  144.  
  145.       <primitive 182 3 0 x 1 private>.
  146.       <primitive 182 3 1 y 1 private>.
  147.  
  148.       leftEdge <- x.
  149.       topEdge  <- y
  150. |
  151.    setItemSize: sizePoint ! w h !
  152.  
  153.       w <- sizePoint x.
  154.       h <- sizePoint y.
  155.  
  156.       <primitive 182 3 2 w 1 private>.
  157.       <primitive 182 3 3 h 1 private>.
  158.  
  159.       width  <- w.
  160.       height <- h
  161. |
  162.    getFlags
  163.  
  164.       ^ flags <- <primitive 182 2 4 1 private>
  165. |
  166.    setFlags: newFlags
  167.  
  168.       <primitive 182 3 4 newFlags 1 private>.
  169.  
  170.       flags <- newFlags
  171. |
  172.    getMutualExclude
  173.  
  174.       ^ mutualExclude <- <primitive 182 2 5 1 private>
  175. |
  176.    setMutualExclude: newMutualExclude
  177.  
  178.       <primitive 182 3 5 newMutualExclude 1 private>.
  179.  
  180.       mutualExclude <- newMutualExclude
  181. |
  182.    getCommand
  183.  
  184.       ^ command <- <primitive 182 2 6 1 private>
  185. |
  186.    setCommand: newCommand
  187.  
  188.       <primitive 182 3 6 newCommand 1 private>.
  189.  
  190.       command <- newCommand
  191. |
  192.    getNextItem
  193.  
  194.       ^ nextItem <- <primitive 182 2 7 1 private>
  195. |
  196.    setNextItem: newNextItem
  197.  
  198.       <primitive 182 3 7 newNextItem 1 private>.
  199.  
  200.       nextItem <- newNextItem
  201. |
  202.    getItemFill
  203.  
  204.       ^ itemFill <- <primitive 182 2 10 1 private>
  205. |
  206.    setItemFill: newItemFill
  207.  
  208.       <primitive 182 3 10 newItemFill 1 private>.
  209.  
  210.       itemFill <- newItemFill
  211. |
  212.    getSelectFill
  213.       ^ selectFill <- <primitive 182 2 11 1 private>
  214. |
  215.    setSelectFill: newSelectFill
  216.  
  217.       <primitive 182 3 11 newSelectFill 1 private>.
  218.  
  219.       selectFill <- newSelectFill
  220. |
  221.    getSubItem
  222.  
  223.       ^ subItem <- <primitive 182 2 12 1 private>
  224. |
  225.    setSubItem: newSubItem
  226.  
  227.       <primitive 182 3 12 newSubItem 1 private>.
  228.  
  229.       subItem <- newSubItem
  230. |
  231.    new: newItemName
  232.  
  233.       private  <- <primitive 182 1 1 newItemName>.
  234.  
  235.       itemName <- newItemName.
  236.  
  237.       ^ self
  238. ]
  239.  
  240. Class SubItem :MenuItem
  241.    private       nextItem leftEdge   topEdge width      height      flags 
  242.    mutualExclude itemFill selectFill command nextSelect subItemName
  243. !
  244. [
  245.    getSubItem
  246.  
  247.       ^ private
  248. |
  249.    dispose
  250.  
  251.       <primitive 182 0 2 private>.
  252.       
  253.       <primitive 250 5 0 private>.
  254.       
  255.       ^ nil
  256. |
  257.    getStartPoint
  258.  
  259.       leftEdge <- <primitive 182 2 0 2 private>.
  260.       topEdge  <- <primitive 182 2 1 2 private>.
  261.  
  262.       ^ leftEdge @ topEdge
  263. |
  264.    getSubSize
  265.  
  266.       width  <- <primitive 182 2 2 2 private>.
  267.       height <- <primitive 182 2 3 2 private>.
  268.  
  269.       ^ width @ height
  270. |
  271.    setStartPoint: newPoint ! x y !
  272.  
  273.       x <- newPoint x.
  274.       y <- newPoint y.
  275.  
  276.       <primitive 182 3 0 x 2 private>.
  277.       <primitive 182 3 1 y 2 private>.
  278.  
  279.       leftEdge <- x.
  280.       topEdge  <- y
  281. |
  282.    setSubSize: sizePoint ! w h ! 
  283.  
  284.       w <- sizePoint x.
  285.       h <- sizePoint y.
  286.  
  287.       <primitive 182 3 2 w 2 private>.
  288.       <primitive 182 3 3 h 2 private>.
  289.  
  290.       width  <- w.
  291.       height <- h
  292. |
  293.    getFlags
  294.  
  295.       ^ flags <- <primitive 182 2 4 2 private>
  296. |
  297.    setFlags: newFlags
  298.  
  299.       <primitive 182 3 4 newFlags 2 private>.
  300.  
  301.       flags <- newFlags
  302. |
  303.    getMutualExclude
  304.  
  305.       ^ mutualExclude <- <primitive 182 2 5 2 private>
  306. |
  307.    setMutualExclude: newMutualExclude
  308.  
  309.       <primitive 182 3 5 newMutualExclude 2 private>.
  310.  
  311.       mutualExclude <- newMutualExclude
  312. |
  313.    getCommand
  314.  
  315.       ^ command <- <primitive 182 2 6 2 private>
  316. |
  317.    setCommand: newCommand
  318.  
  319.       <primitive 182 3 6 newCommand 2 private>.
  320.  
  321.       command <- newCommand
  322. |
  323.    getNextItem
  324.  
  325.       ^ nextItem <- <primitive 182 2 7 2 private>
  326. |
  327.    setNextItem: newNextItem
  328.  
  329.       <primitive 182 3 7 newNextItem 2 private>.
  330.  
  331.       nextItem <- newNextItem
  332. |
  333.    getItemFill
  334.  
  335.       ^ itemFill <- <primitive 182 2 10 2 private>
  336. |
  337.    setItemFill: newItemFill
  338.  
  339.       <primitive 182 3 10 newItemFill 2 private>.
  340.  
  341.       itemFill <- newItemFill
  342. |
  343.    getSelectFill
  344.  
  345.       ^ selectFill <- <primitive 182 2 11 2 private>
  346. |
  347.    setSelectFill: newSelectFill
  348.  
  349.       <primitive 182 3 11 newSelectFill 2 private>.
  350.  
  351.       selectFill <- newSelectFill
  352. |
  353.    new: newSubItemName
  354.  
  355.       private     <- <primitive 182 1 2 newSubItemName>.
  356.  
  357.       subItemName <- newSubItemName.
  358.  
  359.       ^ self
  360. ]
  361.